package com.example.tests;

import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;

import java.util.Random;

import org.testng.annotations.Test;

import com.example.utils.SortedListOf;

public class ContactRemovalTests extends TestBase{

	@Test(dataProvider = "randomValidContactGenerator")
	public void deleteSomeContact(ContactData contact){
	    app.navigateTo().mainPage();
	    
	    // save old state
	    SortedListOf<ContactData> oldList = app.getModel().getContacts();
	    
	    Random rnd = new Random();
	    int index = rnd.nextInt(oldList.size()-1);
	    
		app.getContactHelper().deleteContact(index);
	    
	    // save new state
		SortedListOf<ContactData> newList = app.getModel().getContacts();
	    
	    //compare state
	    assertThat(newList, equalTo(oldList.without(index)));
	    
	    if (wantToCheck()){
            if ("yes".equals(app.getProperty("check.db"))){
                    assertThat(newList, equalTo(app.getHibernateHelper().listContacts().without(index)));
            }
            if ("yes".equals(app.getProperty("check.ui"))){
                    assertThat(newList, equalTo(app.getContactHelper().getUiContact().without(index)));
            }
    }
	}
		
}
